# -*- coding: utf-8 -*-
#!/bin/env python

import socket
import urllib
import urllib2
import xml.dom.minidom


#########################################################################
##-backupスクリプトの使用方法について-
##
##以下で実行されます。
##>backup("ID","PASS", min, max )
## 各パラメータについて
## ID,PASS
##         100uhacoプロジェクトに使用しているもの
## min,max
##         "今日"から"四日前"のデータを保存したい場合は
##         min=0,max=-4のように指定。
##
##出力先はスクリプト実行ディレクトリとなり、以下の形式で保存されます。
##"ID"-"指定した日付".xml　(ex:pot-2010-03-26.xml)
##
#########################################################################


def backup(ID, passwd,min ,max):
        if max > min:
                print "Invalid"
        elif min > 0:
                print "Invalid"
        else:
                socket.setdefaulttimeout(31)
                opener = urllib2.build_opener(urllib2.HTTPCookieProcessor())
                urllib2.install_opener(opener)
                
                params = urllib.urlencode(dict(username= ID, password= passwd))

                try:
                        f = opener.open('http://100uhaco.appspot.com/account/login/?next=/haco/csv/', params)
                        data = f.read()
                        if not data.count("Login"):
                                f.close()
                                for delta in range(max, min + 1):
                                        load(ID, passwd, opener, delta)
                        else:
                                f.close()
                                print "Auth Error"
                        
                except Exception , e:
                        print e
        

def load(ID, passwd, opener, delta):
        URL = "http://100uhaco.appspot.com/haco/feed/?delta=" + str(delta)

        try:
                f = opener.open(URL)
                data = f.read()
                f.close()

                title = naming(data)
                w_file( data, title)
        except urllib2.HTTPError,e :
                print " Failed:" + str(e)

        
def w_file( data , title):
        file = open(title,"a")
        print >> file ,data


def naming( data):
        dom = xml.dom.minidom.parseString(data)
        dates = dom.getElementsByTagName("date")
        usernames = dom.getElementsByTagName("username")

        date = elements( dates)
        username = elements( usernames)

        dom.unlink()
        print "genarating file:" +username +"-"+ date+".xml"
        return username +"-"+ date+".xml"        
        

def elements( nodes):
        for node in nodes:
                return node.childNodes[0].data









